﻿#pragma warning(disable: 4996)
#pragma warning(disable: 6031)

/*
本题要求计算并输出不超过n的最大的k个素数以及它们的和。

输入格式:
输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。

输出格式:
在一行中按下列格式输出:

素数1+素数2+…+素数k=总和值
其中素数按递减顺序输出。若n以内不够k个素数，则按实际个数输出。

输入样例1:
1000 10
输出样例1:
997+991+983+977+971+967+953+947+941+937=9664
输入样例2:
12 6
输出样例2:
11+7+5+3+2=28
*/

#include <stdio.h>
#include <math.h>

int n, k;

int is_prime(int m) {
	if (m < 2)
		return 0;
	else if (m < 4)
		return 1;
	else if (m % 2 == 0)
		return 0;
	int i = 3;
	int m2 = sqrt(m) + 1;
	for (i = 3; i <= m2; i += 2)
		if (m % i == 0)
			return 0;
	return 1;
}


void read_data()
{
	scanf("%d %d", &n, &k);
}

void solve()
{
	int sum = 0;
	for (int i = n; i > 1 && k > 0; --i) {
		if (is_prime(i)) {
			if (sum)
				printf("+");
			printf("%d", i);
			k--;
			sum += i;
		}
	}
	printf("=%d", sum);
}

int main()
{
	freopen("D:/Develop/GitRepos/MOOC/浙江大学/数据结构/201906/DataStructure/M2019秋C入门和进阶练习集/7-51.txt", "r", stdin);
	read_data();
	solve();
	return 0;
}

//freopen("D:/Develop/GitRepos/MOOC/浙江大学/数据结构/201906/DataStructure/M2019秋C入门和进阶练习集/7-50.txt", "r", stdin);
